<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			// 正则表达式：Regular Expression。它是由一些特定字符组成的一个字符串。
			// 其实这些字符组成了一个逻辑公式，用来过滤或者匹配某一个文本中的内容。
			// 比如判断一个字符串是不是合法的手机号，是不是合法的邮箱地址等。大部分的编程语言中都引入了正则表达式技术来解决这个问题。

			//  正则表达式有两种创建方法
			//  1、new RegExp()
			//  2、字面量的方式

			// 1.通过关键字new创建

			// new RegExp(reg, flags);
			// reg 模式，表示正则表达式的文本
			// flags 标记，如果指定此项，flags可以是下面值之一：
			// g: global match 	全局搜索 (全文查找出现的所有匹配字符)
			// i: ignore case	忽略大小写
			// gi: both global match and ignore case(全文匹配所有可能的值，也忽略大小写)

			// 参数"Box"不是特殊格式，只是一个普通的字符串。
			var reg = new RegExp('Box');
			// / 表示正则表达式模式的开始或结尾
			console.log(reg); // /Box/
			reg = new RegExp('Box', 'gi');
			console.log(reg);

			// 2.通过字面量的方式创建
			re = /Box/;
			re = /Box/gi;
			console.log(reg);

			/*
			 * 正则表达式如何使用？
			 * 正则表达式提供了两个测试方法：test() exec()
			 * test()判断字符串中是否匹配当前的正则表达式
			 * 如果匹配返回true，否则返回flase
			 * 基本方法：reg.test(string)
			 *
			 * exec()将字符串与正则表达式进行一次匹配，获取字符串中
			 * 第一个与正则表达式相匹配的内容，并将该结果放入数组中
			 * 基本方法：reg.exec(string)
			 *
			 * reg：RegExp 正则表达式的对象名称
			 * string：要进行匹配的字符串
			 */

			var reg = /B/;
			var str = 'box';
			//false  因为这里区分大小写
			console.log(reg.test(str));

			var reg = /B/gi;
			var str = 'boxbox';
			//true  因为这里不区分大小写
			console.log(reg.lastIndex);
			console.log(reg.test(str));
			console.log(reg.lastIndex);
			console.log(reg.test(str));
			console.log(reg.lastIndex);
			console.log(reg.test(str));

			var reg = /Box/i;
			var str = 'box box';
			//[box] 包含匹配到字符串的一个数组 exec会返回匹配的内容
			console.dir(reg.exec(str));

			var reg = /Box/gi;
			var str = 'this is a box this is a Box';
			console.dir(reg.exec(str));

			// 执行exec函数，尽管是全局匹配的正则表达式，
			// 但是exec方法只对指定的字符串进行一次匹配，
			// 获取字符串中第一个与正则表达式想匹配的内容，
			// 并且将匹配内容和子匹配的结果存储到返回的数组中

			var str = 'google\nrunoob\ntaobao';
			var n1 = /google./.test(str); // 没有使用 s，无法匹配\n
			var n2 = /runoob./s.test(str); // 使用 s，匹配\n

			console.log(n1, n2);

			console.log(/<p>(.*?)<\/p>/.exec('<p>hello</p>'));


    
		</script>
	</body>
</html>
